<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 skin-theme-clientpref-day vector-sticky-header-enabled" lang="de" dir="ltr"><head>
<meta charset="UTF-8">
<title>XQuery</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://de.wikipedia.org/wiki/XQuery"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.pygments.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link href="./_mw_/ext.gadget.citeRef.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.defaultPlainlinks.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonHide.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonLayout.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonStyle.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiDarkmode.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiResponsive.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.specialSearch.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-XQuery rootpage-XQuery skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">XQuery</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="de" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="de" dir="ltr"><table class="float-right infobox toccolours toptextcells" style="font-size:90%; margin-top:0; width:21em;">
<tbody><tr>
<th colspan="2" class="hintergrundfarbe6" style="font-size:larger;">XQuery
</th></tr>
<tr>
<th colspan="2" class="hintergrundfarbe5" style="font-size:105%; text-align:center;">Basisdaten
</th></tr>
<tr>
<td><b><a href="Programmierparadigma" title="Programmierparadigma">Paradigmen</a>:</b>
</td>
<td><a href="Extensible_Markup_Language" title="Extensible Markup Language">XML</a>
</td></tr>
<tr>
<td><b>Erscheinungsjahr:</b>
</td>
<td>2005
</td></tr>
<tr>
<td><b>Designer:</b>
</td>
<td><span class="wikidata-content"><a href="World_Wide_Web_Consortium" title="World Wide Web Consortium">World Wide Web Consortium</a></span>
</td></tr>
<tr>
<td><b>Entwickler:</b>
</td>
<td><a href="World_Wide_Web_Consortium" title="World Wide Web Consortium">World Wide Web Consortium</a>
</td></tr>
<tr>
<td><b>Aktuelle <a href="Version_(Software)" title="Version (Software)">Version</a>:</b>
</td>
<td style="white-space:nowrap;">3.1 <small>(21. März 2017)</small>
</td></tr>
<tr>
<td><b><a href="Typisierung_(Informatik)" title="Typisierung (Informatik)">Typisierung</a>:</b>
</td>
<td><a href="Starke_Typisierung" title="Starke Typisierung">stark</a>
</td></tr>
<tr>
<td><b>Wichtige <a href="Implementierung" title="Implementierung">Implementierungen</a>:</b>
</td>
<td><a href="BaseX" title="BaseX">BaseX</a>, <a href="EXist_(Datenbank)" title="EXist (Datenbank)">EXist (Datenbank)</a>, Galax, <a href="Saxon_(Software)" title="Saxon (Software)">Saxon</a>, Pathfinder, XQilla, Zorba
</td></tr>
<tr>
<td><b>Standardisierungen:</b>
</td>
<td><a rel="nofollow" class="external text" href="http://www.w3.org/standards/techs/xquery#w3c_all">W3C Spezifikationen</a>
</td></tr>
<tr>
<td><b>Beeinflusst von:</b>
</td>
<td><a href="XQL" title="XQL">XQL</a>, <a href="XML-QL" title="XML-QL">XML-QL</a>, Quilt
</td></tr>
<tr>
<td><b><a href="Betriebssystem" title="Betriebssystem">Betriebssystem</a>:</b>
</td>
<td><a href="Plattformunabh%C3%A4ngigkeit" title="Plattformunabhängigkeit">plattformunabhängig</a>
</td></tr>
<tr>
<td colspan="2" class="hintergrundfarbe5" style="text-align:center;"><a rel="nofollow" class="external text" href="http://www.w3.org/standards/xml/query">w3.org</a>
</td></tr></tbody></table>
<p><b>XQuery</b> steht für <b>XML Query Language</b> und bezeichnet eine vom <a href="W3C" class="mw-redirect" title="W3C">W3C</a> spezifizierte <a href="Abfragesprache" title="Abfragesprache">Abfragesprache</a> für <a href="XML-Datenbank" title="XML-Datenbank">XML-Datenbanken</a>. Sie dient dazu, aus großen <a href="Extensible_Markup_Language" title="Extensible Markup Language">XML</a>-Datensammlungen einzelne Teile herauszusuchen. Im Gegensatz dazu wird <a href="XSL_Transformation" title="XSL Transformation">XSLT</a> verwendet, um komplette XML-Dokumente zu transformieren.
</p><p>XQuery benutzt eine an XSLT, <a href="SQL" title="SQL">SQL</a> und <a href="C_(Programmiersprache)" title="C (Programmiersprache)">C</a> angelehnte Syntax und verwendet <a href="XPath" title="XPath">XPath</a> sowie <a href="XML_Schema" title="XML Schema">XML Schema</a> für sein Datenmodell und seine Funktionsbibliothek. Es ist aus den Sprachen <a href="XML_Query_Language" class="mw-redirect" title="XML Query Language">XQL</a>, <a href="XML-QL" title="XML-QL">XML-QL</a> und Quilt hervorgegangen.
</p><p>XQuery ist <a href="Starke_Typisierung" title="Starke Typisierung">stark typisiert</a> und <a href="Turing-Vollst%C3%A4ndigkeit" title="Turing-Vollständigkeit">Turing-vollständig</a>.
</p><p>An der Entwicklung wesentlich beteiligt war (wie schon bei Quilt) <a href="Donald_D._Chamberlin" title="Donald D. Chamberlin">Donald D. Chamberlin</a>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Sprachelemente">Sprachelemente</h2></div>
<p>Außer Pfadausdrücken (<a href="XPath" title="XPath">XPath</a>) gibt es eine ganze Reihe weiterer Spracheigenschaften, die in den folgenden Abschnitten anhand von kurzen Beispielen erläutert werden sollen.
</p>
<div class="mw-heading mw-heading3"><h3 id="Datenmodell">Datenmodell</h3></div>
<p>Die grundlegende Datenstruktur in XQuery ist eine Sequenz. Eine Sequenz ist eine geordnete Liste von keinem, einem oder mehreren Elementen. Eine Sequenz kann also auch ein XML-Dokument sein. Sequenzen werden in der Regel geklammert und können auch Duplikate enthalten. Sequenzen können nicht verschachtelt werden.
</p><p><b>Folgende Sequenzen sind identisch:</b>
</p>
<ul><li><code>(1, 2, 1)</code> und <code>(1, (2, 1))</code></li>
<li><code>(1, (), )</code> und <code>(1, )</code></li>
<li><code>(<A/>)</code> und <code><A/></code></li></ul>
<p><b>XQuery stellt sechs Funktionen zur Abfrage von <a href="M%C3%A4chtigkeit_(Mathematik)" title="Mächtigkeit (Mathematik)">Kardinalitäten</a> auf Sequenzen zur Verfügung:</b>
</p>
<ul><li>fn:zero-or-one($seq)</li>
<li>fn:one-or-more($seq)</li>
<li>fn:exactly-one($seq)</li>
<li>fn:empty($seq)</li>
<li>fn:exists($seq)</li>
<li>fn:count($seq)</li></ul>
<p>Variablen werden in XQuery mit $-Präfix bezeichnet.
</p><p><b>Bearbeiten von Sequenzen</b>
</p>
<ul><li>Der Kommaoperator hängt zwei Sequenzen hintereinander</li>
<li>Werte hinzufügen kann man mit der Funktion fn:insert-before</li>
<li>Werte löschen kann man mit der Funktion fn:remove</li>
<li>Werte neu anordnen kann man mit der Funktion fn:reverse</li>
<li>Werte umsortieren kann man mit der Funktion fn:unordered</li></ul>
<div class="mw-heading mw-heading3"><h3 id="Konstruktion_von_XML-Elementen">Konstruktion von XML-Elementen</h3></div>
<p>Direkte XML-Konstruktion mit konstanten Elementnamen („direct constructors“):
</p>
<pre> <html>
<head> { $page/head/content() } </head>
<body bgcolor={ $style/bgcolor/text() } > { $page/body/content() } </body>
</html>
</pre>
<p>„Computed constructors“
</p>
<pre> element html {
element head { $page/head/content() }
element body {
attribute bgcolor { $style/bgcolor/text() },
text { $page/body/content() }
}
}
</pre>
<p>Zur Konstruktion von XML-Daten stehen sowohl die direkte Schreibweise als XML als auch die eher deklarative Konstruktion mittels der sogenannten „computed constructors“ zur Verfügung. In beiden Fällen dienen die geschweiften Klammern <code style="white-space: nowrap">{ ... }</code> zur Einbettung von beliebigen weiteren XQuery-Ausdrücken in den Konstruktor.
</p>
<div class="mw-heading mw-heading3"><h3 id="Sortier-Funktionalität_(„order_by“)"><span id="Sortier-Funktionalit.C3.A4t_.28.E2.80.9Eorder_by.E2.80.9C.29"></span>Sortier-Funktionalität („order by“)</h3></div>
<p>Im Gegensatz zur <a href="Relationale_Algebra" title="Relationale Algebra">Relationalen Algebra</a> und zu <a href="SQL" title="SQL">SQL</a> besitzen XML-Datenelemente eine implizit vorgegebene Ordnung („document order“). Alle XQuery-Ausdrücke müssen diese Ordnung erhalten, es sei denn, dies wird im Ausdruck explizit ausgeschaltet (Ordering mode: unordered).
</p>
<div class="mw-heading mw-heading3"><h3 id="FLWOR-Ausdrücke"><span id="FLWOR-Ausdr.C3.BCcke"></span>FLWOR-Ausdrücke</h3></div>
<p>Eine zentrale Rolle in XQuery spielen die sogenannten FLWOR-Ausdrücke (ausgesprochen: <i>flower</i>). FLWOR ist eine Abkürzung für die Konstrukte <code>for, let, where, order by</code> und <code>return</code>, und kann als Analogie zu den (SELECT, FROM, WHERE) – Konstrukten in SQL betrachtet werden. Im Unterschied zu SQL sind FLWOR-Ausdrücke allerdings <a href="Case_sensitivity" title="Case sensitivity">case-sensitive</a>. FLWOR-Ausdrücke bilden Sequenzen auf Sequenzen ab (vgl. <a href="#Datenmodell">Datenmodell</a>). FLWOR-Ausdrücke besitzen die folgende generische Form:
</p>
<pre><b>for</b> $forvar1 <b>at</b> $posvar1 <b>in</b> <Expr><b>,</b> $forvar2 <b>at</b> $posvar2 <b>in</b> <Expr> …
<b>let</b> $letvar1 <b>:=</b> <Expr><b>,</b> $letvar2 <b>:=</b> <Expr> …
<b>where</b> <BoolExpr>
<b>order by</b> <Expr> <b>ascending</b>/<b>descending</b>
<b>return</b> <Expr>
</pre>
<p>Hierbei steht <code><Expr></code> für beliebige andere XQuery-Ausdrücke, und <code><BoolExpr></code> für einen Ausdruck vom Typ boolean. Die <code>for</code>-Konstrukte binden ihre Variablen <code>$forvar1, $forvar2, ... </code> sequentiell an je einen Wert aus den Bindungssequenzen <code><Expr></code>. Über das Schlüsselwort <code>at</code> kann die Position der vorherstehenden Variable in der <code><Expr></code>-Sequenz an eine Positionsvariable gebunden werden, wobei die Nummerierung bei 1 beginnt. Im Unterschied dazu binden die <code>let</code>-Konstrukte ihre Variablen <code>$letvar1, $letvar2, ...</code> an das gesamte Ergebnis des assoziierten Ausdrucks. Die sich ergebende Tupelfolge beinhaltet alle möglichen Kombinationen von Variablenbindungen, die sich aus der Belegung der for- und let-Variablen bilden lassen.
</p><p>Das <code>where</code>-Konstrukt dient zur Eliminierung unerwünschter Tupel. Sinnvollerweise nimmt sein boolescher Ausdruck Bezug auf mindestens eine der in den <code>for</code>- und <code>let</code>-Konstrukten gebundenen Variablen. Das Gleiche gilt für das <code>order by</code>-Konstrukt, das zum Sortieren der Tupel dient. Im <code>return</code>-Konstrukt werden schließlich die Variablen von Interesse zurückgegeben, möglicherweise eingebettet in direkt oder indirekt konstruierte Elemente. In komplexeren Fällen werden FLWOR-Ausdrücke auch geschachtelt, das bedeutet, dass an der Stelle von jedem Vorkommen von <code><Expr></code> wiederum ein beliebiger FLWOR-Ausdruck stehen kann.
</p><p>Das nachfolgende Beispiel veranschaulicht die Verwendung von <code>for</code> und <code>let</code>. Der <code>for</code>-Teil des Ausdrucks selektiert alle Absätze innerhalb einer HTML-Seite (<p>-Elemente). Im <code>let</code>-Teil wird für jeden Paragraph mit Hilfe von vordefinierten Funktionen die Zahl der Worte ermittelt. Anschließend werden alle nicht leeren Paragraphen (Wortzahl > 0) um eine Größenangabe erweitert und ausgegeben.
</p>
<pre><b>for</b> $par <b>in</b> $page//p
<b>let</b> $words <b>:=</b> fn:count(fn:tokenize($par/content(), " \n\t"))
<b>where</b> $words gt 0
<b>return</b> <p>
{$par/content()}<br/>
Size: { $words }
</p>
</pre>
<p>Zu beachten ist bei diesem Ausdruck, dass <code>for</code>- und <code>let</code>-Teil abhängig voneinander sind, die im <code>for</code>-Teil deklarierte Variable <code>$par</code> wird im <code>let</code>-Teil verwendet.
Für die Auswertung bedeutet dies, dass der <code>let</code>-Teil für jede Belegung der Variable <code>$par</code> neu ausgewertet werden muss.
</p>
<div class="mw-heading mw-heading3"><h3 id="Verbundoperationen_und_Gruppierungen">Verbundoperationen und Gruppierungen</h3></div>
<p>Verbundoperationen (oder engl. <i>Joins</i>) bezeichnen eine Mengenoperation bestehend aus der Bildung eines kartesischen Produktes zweier Eingabemengen und einer nachfolgenden Selektion (vergl. <a href="Relationale_Algebra" title="Relationale Algebra">Relationale Algebra</a>). Im Beispiel des vorherigen Abschnitts zu FLWOR-Ausdrücken ist bereits eine solche Verbundoperation gezeigt. Die Bindungen der in den <code>for</code>- und <code>let</code>-Teilen deklarierten Variablen bilden die jeweiligen Eingabemengen auf deren kartesisches Produkt die Selektionsbedingungen des <code>where</code>-Teils angewandt werden.
Da Selektionsbedingungen sowohl im <code>where</code>-Teil des Ausdrucks als auch innerhalb der <code>for</code>- und <code>let</code>-Teile in Subausdrücken auftreten können, ist vor der Auswertung eines Ausdrucks eine Normalisierung notwendig.
</p>
<div class="mw-heading mw-heading3"><h3 id="Vordefinierte_Funktionen">Vordefinierte Funktionen</h3></div>
<p>Zur Berechnung arithmetischer Gleichungen sowie Datumsberechnungen sowie zur Bearbeitung von Sequenzen im <a href="#Datenmodell">Datenmodell</a>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Benutzerdefinierte_Funktionen">Benutzerdefinierte Funktionen</h3></div>
<p>Mittels <code>declare function</code> können benutzerdefinierte Funktionen deklariert werden. Die allgemeine Form sieht folgendermaßen aus:
</p>
<pre><b>declare function</b> namespace:funktionsname
($parameter1 <b>as</b> datentyp1, $parameter2 <b>as</b> datentyp2, …) <b>as</b> rückgabedatentyp <b>{</b>
<XQuery-Ausdruck>
<b>}</b>
</pre>
<p>Funktionen können andere Funktionen und sich selbst <a href="Rekursion" title="Rekursion">rekursiv</a> aufrufen, damit ist XQuery <a href="Turing-Vollst%C3%A4ndigkeit" title="Turing-Vollständigkeit">Turing-vollständig</a>.
</p>
<div class="mw-heading mw-heading3"><h3 id="Verschiedene_Vergleichsoperatoren">Verschiedene Vergleichsoperatoren</h3></div>
<p>XQuery kennt zwei Typen von Vergleichsfunktionen: wertqualifizierend oder existenzqualifizierend.
Die wertqualifizierenden Operatoren ähneln den üblichen Operatoren aus anderen Programmiersprachen. Folgende Operatoren sind definiert
</p>
<ul><li>eq: Prüft auf Gleichheit (equal)</li>
<li>ne: Prüft auf Ungleichheit (not equal)</li>
<li>lt: Prüft auf Kleiner (less than)</li>
<li>gt: Prüft auf Größer (Greater than)</li>
<li>le: Prüft auf Kleiner-Gleich (Less or equal)</li>
<li>ge: Prüft auf Größer-Gleich (Greater or equal)</li></ul>
<p>Die „üblichen“ Vergleichsoperatoren (<code>=</code>, <code>!=</code>, <code><</code>, <code>></code>, <code><=</code>, <code>>=</code>) führen einen existenziellen Vergleich durch. Dabei können links und rechts des Operators Sequenzen stehen. So ist der Ausdruck <code>seq1 OP seq2</code> genau dann wahr, wenn ein Element <code>e1</code> aus <code>seq1</code> und ein <code>e2</code> aus <code>seq2</code> existieren mit <code>e1 OP e2</code>, wobei <code>OP</code> einer der Operatoren <code>=</code>, <code>!=</code>, <code><</code>, <code>></code>, <code><=</code> oder <code>>=</code> ist. So ist <code>(1, 2) > (3, 0)</code> wahr, da <code>1 > 0</code> ist.
</p>
<div class="mw-heading mw-heading2"><h2 id="Beispiele">Beispiele</h2></div>
<p>Zählen aller question-<a href="Extensible_Markup_Language" title="Extensible Markup Language">XML</a>-Elemente im Quelldokument:
</p>
<pre>fn:count(//question)
</pre>
<p>Komplexeres Beispiel, Auflisten aller Fragen aller Dokumente einer Galerie für <a href="KEduca" title="KEduca">KEduca</a>, die weniger als zwei Antworten haben:
</p>
<div class="mw-highlight mw-highlight-lang-text mw-content-ltr" dir="ltr"><pre><span></span><noanswerquestions>{
for $s in fn:doc("lpi101.edugallery")//server/@address
for $d in fn:doc($s)[count(.//question/(true, false)) <= 1]
return <doc src="{ $s }">{
$d//question[count((true, false)) <= 1]
}</doc>
}</noanswerquestions>
</pre></div>
<p>Ein weiteres Beispiel (zeigt die Möglichkeit der indirekten Umstrukturierung durch XQuery)
</p>
<ul><li>Quell-Dokument:</li></ul>
<div style="margin-left:2em" class="mw-highlight mw-highlight-lang-xml mw-content-ltr" dir="ltr"><pre><span></span><span class="cp"><?xml version="1.0" encoding="ISO-8859-1"?></span>
<span class="nt"><partlist></span>
<span class="w"> </span><span class="nt"><part</span><span class="w"> </span><span class="na">partid=</span><span class="s">"0"</span><span class="w"> </span><span class="na">name=</span><span class="s">"car"</span><span class="nt">/></span>
<span class="w"> </span><span class="nt"><part</span><span class="w"> </span><span class="na">partid=</span><span class="s">"1"</span><span class="w"> </span><span class="na">partof=</span><span class="s">"0"</span><span class="w"> </span><span class="na">name=</span><span class="s">"engine"</span><span class="nt">/></span>
<span class="w"> </span><span class="nt"><part</span><span class="w"> </span><span class="na">partid=</span><span class="s">"2"</span><span class="w"> </span><span class="na">partof=</span><span class="s">"0"</span><span class="w"> </span><span class="na">name=</span><span class="s">"door"</span><span class="nt">/></span>
<span class="w"> </span><span class="nt"><part</span><span class="w"> </span><span class="na">partid=</span><span class="s">"3"</span><span class="w"> </span><span class="na">partof=</span><span class="s">"1"</span><span class="w"> </span><span class="na">name=</span><span class="s">"piston"</span><span class="nt">/></span>
<span class="w"> </span><span class="nt"><part</span><span class="w"> </span><span class="na">partid=</span><span class="s">"4"</span><span class="w"> </span><span class="na">partof=</span><span class="s">"2"</span><span class="w"> </span><span class="na">name=</span><span class="s">"window"</span><span class="nt">/></span>
<span class="w"> </span><span class="nt"><part</span><span class="w"> </span><span class="na">partid=</span><span class="s">"5"</span><span class="w"> </span><span class="na">partof=</span><span class="s">"2"</span><span class="w"> </span><span class="na">name=</span><span class="s">"lock"</span><span class="nt">/></span>
<span class="w"> </span><span class="nt"><part</span><span class="w"> </span><span class="na">partid=</span><span class="s">"10"</span><span class="w"> </span><span class="na">name=</span><span class="s">"skateboard"</span><span class="nt">/></span>
<span class="w"> </span><span class="nt"><part</span><span class="w"> </span><span class="na">partid=</span><span class="s">"11"</span><span class="w"> </span><span class="na">partof=</span><span class="s">"10"</span><span class="w"> </span><span class="na">name=</span><span class="s">"board"</span><span class="nt">/></span>
<span class="w"> </span><span class="nt"><part</span><span class="w"> </span><span class="na">partid=</span><span class="s">"12"</span><span class="w"> </span><span class="na">partof=</span><span class="s">"10"</span><span class="w"> </span><span class="na">name=</span><span class="s">"wheel"</span><span class="nt">/></span>
<span class="w"> </span><span class="nt"><part</span><span class="w"> </span><span class="na">partid=</span><span class="s">"20"</span><span class="w"> </span><span class="na">name=</span><span class="s">"canoe"</span><span class="nt">/></span>
<span class="nt"></partlist></span>
</pre></div>
<ul><li>Ziel-Dokument:</li></ul>
<div style="margin-left:2em" class="mw-highlight mw-highlight-lang-xml mw-content-ltr" dir="ltr"><pre><span></span><span class="nt"><parttree></span>
<span class="w"> </span><span class="nt"><part</span><span class="w"> </span><span class="na">partid=</span><span class="s">"0"</span><span class="w"> </span><span class="na">name=</span><span class="s">"car"</span><span class="nt">></span>
<span class="w"> </span><span class="nt"><part</span><span class="w"> </span><span class="na">partid=</span><span class="s">"1"</span><span class="w"> </span><span class="na">name=</span><span class="s">"engine"</span><span class="nt">></span>
<span class="w"> </span><span class="nt"><part</span><span class="w"> </span><span class="na">partid=</span><span class="s">"3"</span><span class="w"> </span><span class="na">name=</span><span class="s">"piston"</span><span class="nt">/></span>
<span class="w"> </span><span class="nt"></part></span>
<span class="w"> </span><span class="nt"><part</span><span class="w"> </span><span class="na">partid=</span><span class="s">"2"</span><span class="w"> </span><span class="na">name=</span><span class="s">"door"</span><span class="nt">></span>
<span class="w"> </span><span class="nt"><part</span><span class="w"> </span><span class="na">partid=</span><span class="s">"4"</span><span class="w"> </span><span class="na">name=</span><span class="s">"window"</span><span class="nt">/></span>
<span class="w"> </span><span class="nt"><part</span><span class="w"> </span><span class="na">partid=</span><span class="s">"5"</span><span class="w"> </span><span class="na">name=</span><span class="s">"lock"</span><span class="nt">/></span>
<span class="w"> </span><span class="nt"></part></span>
<span class="w"> </span><span class="nt"></part></span>
<span class="w"> </span><span class="nt"><part</span><span class="w"> </span><span class="na">partid=</span><span class="s">"10"</span><span class="w"> </span><span class="na">name=</span><span class="s">"skateboard"</span><span class="nt">></span>
<span class="w"> </span><span class="nt"><part</span><span class="w"> </span><span class="na">partid=</span><span class="s">"11"</span><span class="w"> </span><span class="na">name=</span><span class="s">"board"</span><span class="nt">/></span>
<span class="w"> </span><span class="nt"><part</span><span class="w"> </span><span class="na">partid=</span><span class="s">"12"</span><span class="w"> </span><span class="na">name=</span><span class="s">"wheel"</span><span class="nt">/></span>
<span class="w"> </span><span class="nt"></part></span>
<span class="w"> </span><span class="nt"><part</span><span class="w"> </span><span class="na">partid=</span><span class="s">"20"</span><span class="w"> </span><span class="na">name=</span><span class="s">"canoe"</span><span class="nt">/></span>
<span class="nt"></parttree></span>
</pre></div>
<ul><li>Lösung in XQuery:</li></ul>
<div style="margin-left:2em" class="mw-highlight mw-highlight-lang-text mw-content-ltr" dir="ltr"><pre><span></span>declare function local:one_level ($p as node()) as node()
{
<part partid="{$p/@partid}" name="{$p/@name}">
{
for $s in doc("data/parts-data.xml")//part
where $s/@partof =$p/@partid
return local:one_level($s)
}
</part>
};
<parttree>
{
for $p in doc("data/parts-data.xml")//part [empty(@partof)]
return local:one_level($p)
}
</parttree>
</pre></div>
<div class="mw-heading mw-heading2"><h2 id="Anwendung">Anwendung</h2></div>
<p>Aufgrund der Wichtigkeit von XML und historisch bedingt hoher Datenbestände in relationalen <a href="Datenbank" title="Datenbank">Datenbanken</a> wurde von der <a href="Internationale_Organisation_f%C3%BCr_Normung" title="Internationale Organisation für Normung">ISO</a> eine Erweiterung des <a href="SQL" title="SQL">SQL</a> Standards namens <a href="SQL/XML" title="SQL/XML">SQL/XML</a> entwickelt, um die Möglichkeiten von XML und SQL zu kombinieren. Als <a href="Abfragesprache" title="Abfragesprache">Abfragesprache</a> zur Abfrage von XML Daten im Rahmen der SQL Funktion XMLQuery wurde XQuery definiert.<sup id="cite_ref-SQLXML2006_1-0" class="reference"><a href="#cite_note-SQLXML2006-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Implementierungen">Implementierungen</h2></div>
<ul><li><a href="BaseX" title="BaseX">BaseX</a>, Open Source: XQuery 3.1, XQuery Full-Text 1.0, XQuery Update 1.0</li>
<li><a href="EXist_(Datenbank)" title="EXist (Datenbank)">eXist</a>, Open Source: XQuery 3.0, XQuery Update 1.0</li>
<li><a href="Saxon_(Software)" title="Saxon (Software)">Saxon</a>, Open Source und kommerziell: XQuery 3.1, XQuery Update 1.0</li>
<li><a rel="nofollow" class="external text" href="https://github.com/sirixdb/sirix">Sirix</a>, Open Source: XQuery 1.0 (und XQuery Update 1.0 auf Basis von <a rel="nofollow" class="external text" href="http://brackit.org/">Brackit</a>)</li>
<li><a rel="nofollow" class="external text" href="https://zadean.github.io/xqerl/">xqerl</a>, Open Source: XQuery 3.1, XQuery Update 3.0</li>
<li><a rel="nofollow" class="external text" href="http://xqilla.sourceforge.net/">XQilla</a>, Open Source: XPath 2.0, XQuery Update 1.0</li>
<li><a rel="nofollow" class="external text" href="http://www.zorba-xquery.com/">Zorba</a>, Open Source: XQuery 3.0, XQuery Full Text 1.0, XQuery Update 1.0;</li>
<li><a rel="nofollow" class="external text" href="https://dev.w3.org/2006/xquery-test-suite/PublicPagesStagingArea/XQTSReport_XQTS_1_0_2.html">XQuery Test Suite Results</a>: Konformität mit XQuery 1.0</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Literatur">Literatur</h2></div>
<ul><li>Priscilla Wamsley: <cite style="font-style:italic">XQuery</cite>. O’Reilly Media, Beijing 2007, ISBN 978-0-596-00634-1.<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:XQuery&rft.au=Priscilla+Wamsley&rft.btitle=XQuery&rft.date=2007&rft.genre=book&rft.isbn=9780596006341&rft.place=Beijing&rft.pub=O%E2%80%99Reilly+Media" style="display:none"> </span></li>
<li>Margit Becher: <cite style="font-style:italic">XML – DTD, XML-Schema, XPath, XQuery, XSLT, XSL-FO, SAX, DOM</cite>. W3L Verlag, Witten 2009, ISBN 978-3-937137-69-8.<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:XQuery&rft.au=Margit+Becher&rft.btitle=XML+-+DTD%2C+XML-Schema%2C+XPath%2C+XQuery%2C+XSLT%2C+XSL-FO%2C+SAX%2C+DOM&rft.date=2009&rft.genre=book&rft.isbn=9783937137698&rft.place=Witten&rft.pub=W3L+Verlag" style="display:none"> </span></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Weblinks">Weblinks</h2></div>
<div class="sisterproject" style="margin:0.1em 0 0 0;"><span class="noviewer" style="display:inline-block; line-height:10px; min-width:1.6em; text-align:center;" aria-hidden="true" role="presentation"><span class="mw-default-size" typeof="mw:File"><span title="Wiktionary"></span></span></span><b><a href="https://de.wiktionary.org/wiki/XQuery" class="extiw external" title="wikt:XQuery">Wiktionary: XQuery</a></b> – Bedeutungserklärungen, Wortherkunft, Synonyme, Übersetzungen</div>
<ul><li><a rel="nofollow" class="external text" href="http://www.w3.org/TR/xquery/">XQuery-Spezifikation</a></li>
<li><a rel="nofollow" class="external text" href="http://www.w3.org/TR/xquery-use-cases/">XQuery Use Cases (Anwendungsgebiete)</a></li>
<li><a rel="nofollow" class="external text" href="http://www.w3.org/TR/xquery-update-10/">XQuery Update Facility</a></li>
<li><a rel="nofollow" class="external text" href="http://parsqube.de/xml-technologien/xquery/">Ausführliche Einführung in XQuery</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Einzelnachweise">Einzelnachweise</h2></div>
<ol class="references">
<li id="cite_note-SQLXML2006-1"><span class="mw-cite-backlink"><a href="#cite_ref-SQLXML2006_1-0">↑</a></span> <span class="reference-text"><span class="book">Michael Wagner: <cite style="font-style:italic">SQL/XML:2006 – Evaluierung der Standardkonformität ausgewählter Datenbanksysteme</cite>. Diplomica Verlag, 2010, ISBN 3-8366-9609-6.<span class="Z3988" title="ctx_ver=Z39.88-2004&rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&rfr_id=info:sid/de.wikipedia.org:XQuery&rft.au=Michael%26%2332%3BWagner&rft.btitle=SQL%2FXML%3A2006+-+Evaluierung+der+Standardkonformit%C3%A4t+ausgew%C3%A4hlter+Datenbanksysteme&rft.date=2010&rft.genre=book&rft.isbn=3836696096&rft.pub=Diplomica+Verlag" style="display:none"> </span></span></span>
</li>
</ol>
<style data-mw-deduplicate="TemplateStyles:r261921266">
/* start https://de.wikipedia.org/ */
.mw-parser-output table.erw-nav-zebra>tbody>:nth-child(odd){background-color:var(--dewiki-hintergrundfarbe-basis)}.mw-parser-output .erw-nav-farbschema-blau .erw-nav-leiste{background-color:#f5f5f5}.mw-parser-output .erw-nav-farbschema-blau .erw-nav-gruppe{background-color:#e5ecf2}.mw-parser-output .erw-nav-farbschema-grau .erw-nav-leiste,.mw-parser-output .erw-nav-farbschema-grau .erw-nav-gruppe{background-color:#ececec}.mw-parser-output .erweiterte-navigationsleiste .klappleiste-inhalt>.wikitable>*>tr{border-top:2px solid #fdfdfd!important;border-bottom:2px solid #fdfdfd!important}@media screen{html.skin-theme-clientpref-night .mw-parser-output .erw-nav-farbschema-blau .erw-nav-leiste,html.skin-theme-clientpref-night .mw-parser-output .erw-nav-farbschema-blau .erw-nav-gruppe,html.skin-theme-clientpref-night .mw-parser-output .erw-nav-farbschema-grau .erw-nav-leiste,html.skin-theme-clientpref-night .mw-parser-output .erw-nav-farbschema-grau .erw-nav-gruppe{background-color:#202122}html.skin-theme-clientpref-night .mw-parser-output .erweiterte-navigationsleiste .klappleiste-inhalt .wikitable tr,html.skin-theme-clientpref-night .mw-parser-output .erweiterte-navigationsleiste .klappleiste-inhalt .wikitable td{border-color:#101418!important}html.skin-theme-clientpref-night .mw-parser-output .erw-nav-bild span[typeof="mw:File"] img{background-color:#c8ccd1}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .erw-nav-farbschema-blau .erw-nav-leiste,html.skin-theme-clientpref-os .mw-parser-output .erw-nav-farbschema-blau .erw-nav-gruppe,html.skin-theme-clientpref-os .mw-parser-output .erw-nav-farbschema-grau .erw-nav-leiste,html.skin-theme-clientpref-os .mw-parser-output .erw-nav-farbschema-grau .erw-nav-gruppe{background-color:#202122}html.skin-theme-clientpref-os .mw-parser-output .erweiterte-navigationsleiste .klappleiste-inhalt .wikitable tr,html.skin-theme-clientpref-os .mw-parser-output .erweiterte-navigationsleiste .klappleiste-inhalt .wikitable td{border-color:#101418!important}html.skin-theme-clientpref-os .mw-parser-output .erw-nav-bild span[typeof="mw:File"] img{background-color:#c8ccd1}}.mw-parser-output .erweiterte-navigationsleiste .hlist .wikitable{border-top:0px!important;border-bottom:0px!important;margin-top:0!important;margin-bottom:0!important}.mw-parser-output .erweiterte-navigationsleiste .hlist .wikitable tr:first-of-type td{border-top:0px!important}.mw-parser-output .erweiterte-navigationsleiste .hlist .wikitable tr:last-of-type td{border-bottom:0px!important}
/* end https://de.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r260755238">
/* start https://de.wikipedia.org/ */
.mw-parser-output div.klappleiste{border:1px solid var(--dewiki-rahmenfarbe1);clear:both;font-size:95%;box-sizing:border-box;margin-top:1.5em;padding:2px}.mw-parser-output div.klappleiste:after{clear:both;content:"";display:block}.mw-parser-output div.klappleiste-bild{float:left;padding:2px}.mw-parser-output div.klappleiste-kopf{background:var(--dewiki-hintergrundfarbe5);color:var(--color-base,#202122);text-align:center;font-weight:bold}.mw-parser-output div.klappleiste.mw-collapsed .klappleiste-bild{display:none}.mw-parser-output div.klappleiste+div.klappleiste,.mw-parser-output div.klappleiste+link+div.klappleiste,.mw-parser-output div.klappleiste+link+link+div.klappleiste,.mw-parser-output div.klappleiste+link+style+div.klappleiste,.mw-parser-output div.klappleiste+style+div.klappleiste,.mw-parser-output div.klappleiste+style+style+div.klappleiste,.mw-parser-output div.klappleiste+style+link+div.klappleiste{margin-top:-1px}@media screen{html.skin-theme-clientpref-night .mw-parser-output .klappleiste-bild span[typeof="mw:File"]:not(.skin-invert-image) img{background-color:#c8ccd1}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .klappleiste-bild span[typeof="mw:File"]:not(.skin-invert-image) img{background-color:#c8ccd1}}
/* end https://de.wikipedia.org/ */
</style>
<div class="klappleiste mw-collapsible navileiste erweiterte-navigationsleiste navigation-not-searchable center erw-nav-farbschema-blau" role="navigation">
<div class="klappleiste-kopf">Standards des <a href="World_Wide_Web_Consortium" title="World Wide Web Consortium">World Wide Web Consortiums</a> (W3C)<div class="erweiterte-navigationsleiste-quicklinks" style="float:left; font-weight:normal; font-size:75%; margin-left:1em; margin-right:2em; display:none;"><span title="Vorlage anzeigen">V</span> – <span title="Diskussion anzeigen">D</span></div></div>
<div class="klappleiste-inhalt mw-collapsible-content" style="clear:left">
<table class="wikitable erw-nav-zebra" style="width:100%;margin:0;text-align:left;font-size:95%;margin-top:.1em;margin-bottom:.0em;">
<tbody><tr>
<td class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;border: 1px solid transparent;border-top: 1px solid #FFF;border-bottom: 2px solid #FFF;padding: 0 1em;"><b>Empfehlungen</b>
</td>
<td class="hlist" style="text-align: left;border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: 0 .25em;">
<p><a href="ActivityPub" title="ActivityPub">ActivityPub</a> | <a href="Accessible_Rich_Internet_Applications" title="Accessible Rich Internet Applications">ARIA</a> | <a href="Canonical_XML" title="Canonical XML">Canonical XML</a> | <a href="Compound_Document_Formats" title="Compound Document Formats">CDF</a> | <a href="Cascading_Style_Sheets" title="Cascading Style Sheets">CSS</a> | <a href="Document_Object_Model" title="Document Object Model">DOM</a> | <a href="W3C_Geolocation_API" title="W3C Geolocation API">Geolocation API</a> | <a href="Hypertext_Markup_Language" title="Hypertext Markup Language">HTML</a> | <a href="HTML5" title="HTML5">HTML5</a> | <a href="InkML" title="InkML">InkML</a> | <a href="Internationalization_Tag_Set" title="Internationalization Tag Set">ITS</a> | <a href="JSON-LD" title="JSON-LD">JSON-LD</a> | <a href="Mathematical_Markup_Language" title="Mathematical Markup Language">MathML</a> | <a href="Web_Ontology_Language" title="Web Ontology Language">OWL</a> | <a href="Platform_for_Privacy_Preferences_Project" title="Platform for Privacy Preferences Project">P3P</a> | PLS | <a href="Portable_Network_Graphics" title="Portable Network Graphics">PNG</a> | <a href="Resource_Description_Framework" title="Resource Description Framework">RDF</a> | <a href="RDF-Schema" title="RDF-Schema">RDF-Schema</a> | <a href="Rule_Interchange_Format" title="Rule Interchange Format">RIF</a> | <a href="SCXML" title="SCXML">SCXML</a> | <a href="Semantic_Interpretation_for_Speech_Recognition" title="Semantic Interpretation for Speech Recognition">SISR</a> | <a href="Simple_Knowledge_Organisation_System" title="Simple Knowledge Organisation System">SKOS</a> | <a href="Synchronized_Multimedia_Integration_Language" title="Synchronized Multimedia Integration Language">SMIL</a> | <a href="SOAP" title="SOAP">SOAP</a> | <a href="Speech_Recognition_Grammar_Specification" title="Speech Recognition Grammar Specification">SRGS</a> | <a href="Speech_Synthesis_Markup_Language" title="Speech Synthesis Markup Language">SSML</a> | <a href="Scalable_Vector_Graphics" title="Scalable Vector Graphics">SVG</a> | <a href="SPARQL" title="SPARQL">SPARQL</a> | <a href="Timed_Text" title="Timed Text">Timed Text</a> | <a href="Turtle_(Syntax)" title="Turtle (Syntax)">Turtle</a> | <a href="VoiceXML" title="VoiceXML">VoiceXML</a> | <a href="Web_Services_Description_Language" title="Web Services Description Language">WSDL</a> | <a href="XForms" title="XForms">XForms</a> | <a href="Extensible_Hypertext_Markup_Language" title="Extensible Hypertext Markup Language">XHTML</a> | <a href="RDFa" title="RDFa">XHTML+RDFa</a> | <a href="XInclude" title="XInclude">XInclude</a> | <a href="XLink_(Syntax)" title="XLink (Syntax)">XLink</a> | <a href="Extensible_Markup_Language" title="Extensible Markup Language">XML</a> | <a href="XML_Base" title="XML Base">XML Base</a> | <a href="XML-Encryption" title="XML-Encryption">XML-Encryption</a> | <a href="XML_Events" title="XML Events">XML Events</a> | <a href="XML_Information_Set" title="XML Information Set">XML Information Set</a> | <a href="Namensraum_(XML)" title="Namensraum (XML)">XML Namespace</a> | <a href="XML_Schema" title="XML Schema">XML Schema</a> | <a href="XML_Signature" title="XML Signature">XML Signature</a> | <a href="XPath" title="XPath">XPath</a> | <a href="XPointer" title="XPointer">XPointer</a> | <a href="XProc" title="XProc">XProc</a> | <a class="mw-selflink selflink">XQuery</a> | <a href="Extensible_Stylesheet_Language" title="Extensible Stylesheet Language">XSL</a> | <a href="Extensible_Stylesheet_Language_%E2%80%93_Formatting_Objects" title="Extensible Stylesheet Language – Formatting Objects">XSL-FO</a> | <a href="XSL_Transformation" title="XSL Transformation">XSLT</a> <small>(Elemente)</small>
</p>
</td>
<td class="erw-nav-bild" style="width:0; padding:0 2px 0 0; border:1px solid transparent;" rowspan="5"><div class="noviewer" aria-hidden="true" role="presentation"><span typeof="mw:File"></span></div>
</td></tr>
<tr>
<td class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;border: 1px solid transparent;border-top: 1px solid #FFF;border-bottom: 2px solid #FFF;padding: 0 1em;"><b>Arbeitsentwürfe<br>und Kandidaten</b>
</td>
<td class="hlist" style="text-align: left;border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: 0 .25em;">
<p><a href="CCXML" title="CCXML">CCXML</a> | <a href="CURIE" title="CURIE">CURIE</a> | <a href="SMIL_Timesheets" title="SMIL Timesheets">SMIL Timesheets</a> | <a href="SXBL" title="SXBL">sXBL</a> | WICD | <a href="XFrames" title="XFrames">XFrames</a> | <a href="XML_Binding_Language" title="XML Binding Language">XBL</a> | XHTML+MathML+SVG | <a href="XMLHttpRequest" title="XMLHttpRequest">XMLHttpRequest</a>
</p>
</td></tr>
<tr>
<td class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;border: 1px solid transparent;border-top: 1px solid #FFF;border-bottom: 2px solid #FFF;padding: 0 1em;"><b>Anmerkungen</b>
</td>
<td class="hlist" style="text-align: left;border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: 0 .25em;">
<p><a href="XAdES" title="XAdES">XAdES</a> | <a href="Extensible_Forms_Description_Language" title="Extensible Forms Description Language">XFDL</a> | <a href="XHTML%2BSMIL" title="XHTML+SMIL">XHTML+SMIL</a> | <a href="Extensible_User_Interface_Protocol" title="Extensible User Interface Protocol">XUP</a>
</p>
</td></tr>
<tr>
<td class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;border: 1px solid transparent;border-top: 1px solid #FFF;border-bottom: 2px solid #FFF;padding: 0 1em;"><b>Richtlinien</b>
</td>
<td class="hlist" style="text-align: left;border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: 0 .25em;">
<p><a href="Web_Content_Accessibility_Guidelines" title="Web Content Accessibility Guidelines">Web Content Accessibility Guidelines</a> | Multimodal Interaction Activity | <a href="W3C_Markup_Validation_Service" title="W3C Markup Validation Service">Markup Validation Service</a>
</p>
</td></tr>
<tr>
<td class="erw-nav-gruppe" style="white-space: nowrap;text-align: right;border: 1px solid transparent;border-top: 1px solid #FFF;border-bottom: 2px solid #FFF;padding: 0 1em;"><b>Initiativen</b>
</td>
<td class="hlist" style="text-align: left;border-left: 2px solid #fdfdfd;width: 100%;margin: .4em 0;border-color: #fdfdfd;padding: 0 .25em;">
<p><a href="Web_Accessibility_Initiative" title="Web Accessibility Initiative">Web Accessibility Initiative</a>
</p>
</td></tr>
</tbody></table></div></div>
<div class="hintergrundfarbe1 rahmenfarbe1 navigation-not-searchable normdaten-typ-s" style="border-style: solid; border-width: 1px; clear: left; margin-bottom:1em; margin-top:1em; padding: 0.25em; overflow: hidden; word-break: break-word; word-wrap: break-word;" id="normdaten">
<div style="display: table-cell; vertical-align: middle; width: 100%;">
<div>
Normdaten (Sachbegriff): <a href="Gemeinsame_Normdatei" title="Gemeinsame Normdatei">GND</a>: <span class="-print"><a rel="nofollow" class="external text" href="https://d-nb.info/gnd/4737681-8">4737681-8</a></span> </div>
</div></div></div><!--htdig_noindex--><div><div class="zim-footer">
Dieser Artikel wurde von <a class="external text" title="Zuletzt bearbeitet am 2023-07-25" href="https://de.wikipedia.org/wiki/?title=XQuery&oldid=235813083">Wikipedia</a> herausgegeben. Der Text ist unter <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.de">Creative Commons Attribution-Share Alike 4.0</a> verfügbar, sofern nicht anders angegeben. Für die Mediendateien können zusätzliche Bedingungen gelten.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>
</body></html>